import Vue from 'vue'
import Vuex from 'vuex'
import Cookies from 'js-cookie'
import _axios from '../plugins/axios'
Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    token: null,
    userInfo: null,
    cartItem: JSON.parse(localStorage.getItem("cartItems")) || [], //保存到本地的数据
    allChecked: false,//全选默认为false
    UnitPrice: 0, //账单的总价
    total: 0, //购物车总价
    addItem: JSON.parse(localStorage.getItem("addItems")) || [],//产品详情页直接购买
    addBuy: JSON.parse(localStorage.getItem("addBuy")) || [],//进入购买页面
    count: 1 * 60 * 1000,//秒数
    timer: null,
    money:0,//用户余额
  },
  getters: {
    LoginToken(state) {
      //判断如果vuex的state里面数据为空 那就去cookie取一次
      if (state.token == null || state.token.length < 1) {
        state.token = Cookies.get("token");
        if (!state.token) {
          state.token = localStorage.getItem("token");
        }
      }
      return state.token;
    },
    LoginUser(state) {
      if (!state.userInfo || !state.userInfo.id) {
        state.userInfo = JSON.parse(localStorage.getItem("user_info"));
      }
      return state.userInfo;
    },
    count(state) {
      return state.count;
    }
  },
  mutations: {
    SaveToken(state, payload) {
      state.token = payload;
      //把token存储在cookie
      Cookies.set("token", payload, { expires: 1 });
      localStorage.setItem("token", payload);
    },
    LoginOut(state) {
      state.token = null;
      Cookies.remove("token");
      localStorage.removeItem("token")
    },
    SaveUserInfo(state, payload) {
      state.userInfo = payload;
      localStorage.setItem("user_info", JSON.stringify(payload));
    },
    // 添加地址
    // ADDEDIT_DATA(state,item){
    //   // let flag = false;
    //   state.addItem.map(ele=>{
    //     console.log(ele);
    //     if(item===item){
    //       return;
    //     }else{
    //       state.addItem.push({
    //         id:item.id,
    //         name:"",
    //         tel:"",
    //         address:"",
    //       })
    //     }
    //     // if(ele.it)
    //   })
    // },

    // 在购物车购买商品
    AddbuyData(state, item) {
      let flag = false;
      // flag假设选中的商品不是同一个商品
      state.addBuy.map((ele) => {
        console.log(ele)
        if (ele.item.selectedSkuComb.id == item.selectedSkuComb.id) {
          flag = true;
          ele.count++
        }
      })
      if (!flag) {
        state.addBuy.push({
          count: item.selectedNum,
          item,
        })
      }
      if (state.cartItem.checked == true) {
        // localStorage.getItem('cartItems', JSON.stringify(state.cartItem))
        state.addBuy=state.cartItem;
      }
      // 总价为0
      state.UnitPrice = 0;
      state.addBuy.forEach((ele) => {
        // 循环总价+
        state.UnitPrice += ele.item.selectedSkuComb.price * ele.count;
      })
      // localStorage.setItem('cartItems', JSON.stringify(state.cartItem))
      localStorage.setItem('addBuy', JSON.stringify(state.addBuy))
    },
    // 直接在产品页面购买
    AddData(state, item) {
      // 不用判断是不是同一种商品，默认就一钟
        state.addItem.push({
          count: item.selectedNum,
          item,
        })
      state.UnitPrice = 0;
      state.addItem.forEach((ele) => {
        state.UnitPrice += ele.item.selectedSkuComb.price * ele.count;
      })
      // localStorage.setItem('cartItems', JSON.stringify(state.cartItem))
      localStorage.setItem('addItem', JSON.stringify(state.addItem))
    },
    // 添加购物车
    AddcartData(state, item) {
      let flag = false;
      state.cartItem.map(ele => {
        console.log(ele)
        if (ele.item.selectedSkuComb.id == item.selectedSkuComb.id) {
          flag = true;
          ele.count++
        }
      })
      if (!flag) {
        state.cartItem.push({
          item,
          checked: false,
          count: item.selectedNum,
        })
      }
      state.total = 0;
      state.cartItem.forEach(ele => {
        if (ele.checked) {
          state.total += ele.item.selectedSkuComb.price * ele.count;
        }
      })
      localStorage.setItem('cartItems', JSON.stringify(state.cartItem))
    },
    // 点击商品前面的商品的复选框
    SelectItem(state, item) {
      item.checked = !item.checked;
      // 假设temp是全部选中
      var temp = state.cartItem.every(ele => {
        return ele.checked == true;
      });
      state.allChecked = temp;
      // 购物车的总价
      state.total = 0;
      // 循环购物车里的物品
      state.cartItem.forEach(ele => {
        if (ele.checked) {
          state.total += ele.item.selectedSkuComb.price * ele.count;
          // state.addBuy==JSON.parse(localStorage.getItem("cartItems"))
        }
      })
      // 循环复选框的内容
      state.addBuy=state.cartItem.filter(ele=>{
        // let index=ele.length;
        
        // ele.checked=true;
        if(ele.checked){
          // state.addBuy=state.cartItem;
          return true;
        }
      })
      localStorage.setItem('cartItems', JSON.stringify(state.cartItem))
      localStorage.setItem('addBuy', JSON.stringify(state.addBuy))
    },
    // 点击底部的全选按钮
    AllSelect(state) {
      state.allChecked = !state.allChecked;
      state.cartItem.forEach(ele => {
        ele.checked = state.allChecked;
      });
      state.total = 0;
      state.cartItem.forEach(ele => {
        if (ele.checked) {
          state.total += ele.item.selectedSkuComb.price * ele.count;
        }
      })
      // 全选↓
      if(state.allChecked){
        state.addBuy=state.cartItem;
        return true;
      }
      localStorage.setItem('cartItems', JSON.stringify(state.cartItem))
    },
    // 减商品
    SubData(state, item) {
      if (item.count > 1) {
        item.count--;
      }
      state.total = 0;
      state.cartItem.forEach(ele => {
        if (ele.checked) {
          state.total += ele.item.selectedSkuComb.price * ele.count;
        }
      })
      localStorage.setItem('cartItems', JSON.stringify(state.cartItem))
    },
    // 加商品
    AddCartData(state, item) {
      item.count++;
      state.total = 0;
      state.cartItem.forEach(ele => {
        if (ele.checked) {
          state.total += ele.item.selectedSkuComb.price * ele.count;
        }
      })
      localStorage.setItem('cartItems', JSON.stringify(state.cartItem))
    },
    // 删除数据
    DeleteCart(state, index) {
      state.cartItem.splice(index, 1);
      state.total = 0;
      state.cartItem.forEach(ele => {
        if (ele.checked) {
          state.total += ele.item.selectedSkuComb.price * ele.count;
        }
      })
      localStorage.setItem('cartItems', JSON.stringify(state.cartItem))
    },
    // 删除购买商品的数据
    DeleteBuy(state, index) {
      state.UnitPrice = 0;
      state.addBuy.splice(index);
      localStorage.setItem('addBuy', JSON.stringify(state.addBuy))
      state.addItem.splice(index);
      // state.UnitPrice = 0;
      localStorage.setItem('addItem', JSON.stringify(state.addItem))
    },

  //  start(state, timer) {//处理数据的变化
  //     // 处理倒计时
  //     if (state.count != 0) {
  //       state.count--;
  //       return;
  //     } else {
  //       clearInterval(timer);
  //       this.$router.push('/');
  //     }
  //   }, 
    // 倒计时结束

  },
  actions: {
    getuserInfo(context) {
      _axios.get("/userinfo", {
        headers: {
          "Authori-zation": "Bearer " + context.state.token
        }
      }).then(result => {
        context.commit("SaveUserInfo", result);
      })
    },
    // 结算选中商品
    AddbuyData(context, item) {
      context.commit('AddbuyData', item)
    },
    // 结算选中商品(直接在产品页面)
    AddData(context, item) {
      context.commit('AddData', item)
    },
    // 添加购物车
    AddcartData(context, item) {
      context.commit('AddcartData', item)
    },
    // 点击商品前面的商品的复选框
    SelectItem(context, item) {
      context.commit('SelectItem', item)
    },
    // 点击底部的全选按钮
    AllSelect(context) {
      context.commit('AllSelect')
    },
    // 减商品
    SubData(context, item) {
      context.commit('SubData', item)
    },
    // 加商品
    AddCartData(context, item) {
      context.commit('AddCartData', item)
    },
    // 删除数据
    DeleteCart(context, index) {
      context.commit('DeleteCart', index)
    },
    // 删除账单数据
    DeleteBuy(context) {
      context.commit('DeleteBuy')
    },
    // start: ({//处理一些异步请求，判断、流程控制
    //   commit
    // }) => {
    //   clearInterval(timer)
    //   var timer = setInterval(function () {
    //     commit('start')
    //   }, 1000)
    //   // console.log(timer);

    // }
  },
  /// Model 数据模型层  module模块
  modules: {
  }
})
